home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / dev / m2 / ModGen.lha / ModGen / Source / GadToolsBox.def next >
Text File  |  1995-04-20  |  14KB  |  505 lines

  1. (* (*----------------------------------------------------------------------
  2.   :Program.     GadToolsBox
  3.   :Contents.    Interface to Jan van den Baard's Library
  4.   :Author.      Kai Bolay [kai]
  5.   :Address.     Snail-Mail:              E-Mail:
  6.   :Address.     Hoffmannstraße 168       UUCP: kai@amokle.stgt.sub.org
  7.   :Address.     D-7250 Leonberg 1        FIDO: 2:2407/106.3
  8.   :History.     v1.0 [kai] 13-Feb-93 (translated from C)
  9.   :History.     v1.1 [kai] 28-Feb-93 (fixed reserved-Bug GadToolsConfig)
  10.   :History.     v1.1 [kai] 28-Feb-93 (windowFlags now LONGSET)
  11.   :History.     v1.2 [kai] 29-Feb-93 (FreeWindows now uses VAR parameter)
  12.   :History.     v1.3m [Frank Lömker] 27-Jul-93 (Umsetzung nach Modula,
  13.   :History.                                 DrawBox korrigiert, LibVersion 39)
  14.   :History.     v1.3t [Frank Lömker] 17-Apr-95 (Umsetzung nach Turbo Modula)
  15.   :Copyright.   FD
  16.   :Language.    Modula-2
  17.   :Translator.  Turbo Modula-2 V1.40
  18. ----------------------------------------------------------------------*) *)
  19. DEFINITION FOR LIBRARY MODULE GadToolsBox;
  20.  
  21. (* using..
  22. forms.h      (Release: 1.0, Revision: 38.10)
  23. prefs.h      (Release: 1.0, Revision: 38.3)
  24. gtxbase.h    (Release: 1.0, Revision: 38.3)
  25. gui.h        (Release: 1.0, Revision: 38.6)
  26. hotkey.h     (Release: 1.0, Revision: 38.5)
  27. textclass.h  (Release: 1.0, Revision: 38.5)
  28. gtx_protos.h (Release: 1.0, Revision: 38.8)
  29. gtx_lib.fd   (Release: ?.?, Revision: 38.8)
  30. *)
  31.  
  32. FROM Exec IMPORT Library,LibraryPtr,DevicePtr,List,ListPtr,Node,NodePtr,
  33.       MsgPortPtr;
  34. FROM Graphics IMPORT TextAttr,GfxBasePtr,RastPortPtr;
  35. FROM Dos IMPORT DosLibraryPtr;
  36. FROM Intuition IMPORT IntuiText,ColorSpec,IntuitionBasePtr,IntuiTextPtr,
  37.       WindowPtr,RequesterPtr,GadgetPtr,IntuiMessagePtr,DrawInfoPtr;
  38. FROM Classes IMPORT IClassPtr;
  39. FROM GadTools IMPORT NewMenu,NewGadget,NewGadgetPtr;
  40. FROM Utility IMPORT TagItemPtr,TAG_USER,Tag,TagItem,TagPtr;
  41. FROM NoFragLib IMPORT MemoryChainPtr;
  42. FROM SYSTEM IMPORT CAST,ADDRESS,BITSET,LONGSET,MAKEID;
  43.  
  44. CONST
  45.   (* GadToolsBox FORM identifiers *)
  46.   idGXMN = MAKEID ("GXMN");
  47.   idGXTX = MAKEID ("GXTX");
  48.   idGXBX = MAKEID ("GXBX");
  49.   idGXGA = MAKEID ("GXGA");
  50.   idGXWD = MAKEID ("GXWD");
  51.   idGXUI = MAKEID ("GXUI");
  52.  
  53.   (* GadToolsBox chunk identifiers. *)
  54.   idMEDA = MAKEID ("MEDA");
  55.   idITXT = MAKEID ("ITXT");
  56.   idBBOX = MAKEID ("BBOX");
  57.   idGADA = MAKEID ("GADA");
  58.   idWDDA = MAKEID ("WDDA");
  59.   idGGUI = MAKEID ("GGUI");
  60.  
  61.   idVERS = MAKEID ("VERS");
  62.  
  63.   (* Version (ID_VERS) chunk... *)
  64. TYPE
  65.   VERSIONPtr = POINTER TO _VERSION;
  66.   _VERSION = RECORD
  67.     version: INTEGER;
  68.     flags: BITSET;
  69.     reserved: ARRAY [0..3] OF LONGINT;
  70.   END;
  71.  
  72.   (* NewMenu (ID_MEDA) chunk... *)
  73. CONST
  74.   MaxMenuTitle = 80;
  75.   MaxMenuLabel = 34;
  76.   MaxShortcut = 2;
  77.  
  78.   MenuVersion = 0;
  79. TYPE
  80.   MENUDATAPtr = POINTER TO MENUDATA;
  81.   MENUDATA = RECORD
  82.     newMenu: NewMenu;
  83.     title: ARRAY [0..MaxMenuTitle-1] OF CHAR;
  84.     label: ARRAY [0..MaxMenuLabel-1] OF CHAR;
  85.     shortCut: ARRAY [0..MaxShortcut-1] OF CHAR;
  86.     flags: BITSET;
  87.   END;
  88.  
  89.   (* IntuiText (ID_ITXT) chunk... *)
  90. CONST
  91.   MaxTextLength = 80;
  92.   ITxtVersion = 0;
  93. TYPE
  94.   ITEXTDATAPtr = POINTER TO ITEXTDATA;
  95.   ITEXTDATA = RECORD
  96.     iText: IntuiText;
  97.     text: ARRAY [0..MaxTextLength-1] OF CHAR;
  98.   END;
  99.  
  100.   (* BevelBox (ID_BBOX) chunk... *)
  101. CONST
  102.   BBoxVersion = 0;
  103. TYPE
  104.   BBOXDATAPtr = POINTER TO BBOXDATA;
  105.   BBOXDATA = RECORD
  106.     left: INTEGER;
  107.     top: INTEGER;
  108.     width: INTEGER;
  109.     height: INTEGER;
  110.     flags: BITSET;
  111.   END;
  112. CONST
  113.   (* BevelBox flag bits *)
  114.   recessed = 0;
  115.   dropBox = 1;
  116.  
  117.   (* NewGadget (ID_GADA) chunk... *)
  118. CONST
  119.   MaxGadgetText = 80;
  120.   MaxGadgetLabel = 34;
  121.  
  122.   GadgetVersion = 0;
  123. TYPE
  124.   GADGETDATAPtr = POINTER TO GADGETDATA;
  125.   GADGETDATA = RECORD
  126.     newGadget: NewGadget;
  127.     gadgetText: ARRAY [0..MaxGadgetText-1] OF CHAR;
  128.     gadgetLabel: ARRAY [0..MaxGadgetLabel-1] OF CHAR;
  129.     flags: BITSET;
  130.     kind: INTEGER;
  131.     numTags: INTEGER;
  132.     reserved: ARRAY [0..3] OF LONGINT;
  133.   END;
  134.   (* NewGadget flag bits *)
  135. CONST
  136.   IsLocked = 5;
  137.   NeedLock = 6;
  138.  
  139.   (* Window (ID_WDDA) chunk... *)
  140. CONST
  141.   MaxWindowName    = 34;
  142.   MaxWindowTitle   = 80;
  143.   MaxWdScreenTitle = 80;
  144.  
  145.   WindowVersion    =  0;
  146. TYPE
  147.   WINDOWDATAPtr = POINTER TO WINDOWDATA;
  148.   WINDOWDATA = RECORD
  149.     name: ARRAY [0..MaxWindowName-1] OF CHAR;
  150.     title: ARRAY [0..MaxWindowTitle-1] OF CHAR;
  151.     screenTitle: ARRAY [0..MaxWdScreenTitle-1] OF CHAR;
  152.     numTags: INTEGER;
  153.     idCountFrom: INTEGER;
  154.     idcmp: LONGSET;
  155.     windowFlags: LONGSET;
  156.     tagFlags: LONGSET;
  157.     innerWidth: INTEGER;
  158.     innerHeight: INTEGER;
  159.     showTitle: BOOLEAN;
  160.     mouseQueue: INTEGER;
  161.     rptQueue: INTEGER;
  162.     flags: BITSET;
  163.     leftBorder: INTEGER;
  164.     topBorder: INTEGER;
  165.     reserved: ARRAY [0..9] OF SHORTINT;
  166.   END;
  167. CONST
  168.   (* Window tag flag bits *)
  169.   InnerWidth      = 0;
  170.   InnerHeight     = 1;
  171.   Zoom            = 2;
  172.   MouseQueue      = 3;
  173.   RptQueue        = 4;
  174.   AutoAdjust      = 5;
  175.   DefaultZoom     = 6;
  176.   FallBack        = 7;
  177.  
  178.   (* GUI (ID_GGUI) chunk... *)
  179. CONST
  180.   MaxScreenTitle = 80;
  181.   FontNameLength = 128;
  182.   MaxColorSpec = 33;
  183.   MaxDriPens = 10;
  184.   MaxMoreDriPens = 10;
  185.  
  186.   GuiVersion = 0;
  187. TYPE
  188.   GUIDATAPtr = POINTER TO GUIDATA;
  189.   GUIDATA = RECORD
  190.     flags0: LONGSET;
  191.     screenTitle: ARRAY [0..MaxScreenTitle-1] OF CHAR;
  192.     left: INTEGER;
  193.     top: INTEGER;
  194.     width: INTEGER;
  195.     height: INTEGER;
  196.     depth: INTEGER;
  197.     displayID: LONGINT;
  198.     overscan: INTEGER;
  199.     driPens: ARRAY [0..MaxDriPens-1] OF INTEGER;
  200.     colors: ARRAY [0..MaxColorSpec-1] OF ColorSpec;
  201.     fontName: ARRAY [0..FontNameLength-1] OF CHAR;
  202.     font: TextAttr;
  203.     moreDriPens: ARRAY [0..MaxMoreDriPens-1] OF INTEGER;
  204.     reserved: ARRAY [0..4] OF LONGINT;
  205.     (*
  206.     * The following fields are private to
  207.     * GadToolsBox and they should not be useful
  208.     * to you!
  209.     *)
  210.     flags1: LONGSET;
  211.     stdScreenWidth: INTEGER;
  212.     stdScreenHeight: INTEGER;
  213.     activeKind: INTEGER;
  214.     lastProject: INTEGER;
  215.     gridX: INTEGER;
  216.     gridY: INTEGER;
  217.     offX: INTEGER;
  218.     offY: INTEGER;
  219.     reserved1: ARRAY [0..6] OF INTEGER;
  220.   END;
  221. CONST
  222.   (* GUI gui_Flags0 flag bits *)
  223.   AutoScroll = 0;
  224.   Workbench  = 1;
  225.   Public     = 2;
  226.   Custom     = 3;
  227.  
  228. CONST
  229.   GTBConfigSave = "ENVARC:GadToolsBox/GadToolsBox.prefs";
  230.   GTBConfigUse  = "ENV:GadToolsBox/GadToolsBox.prefs";
  231.  
  232.   GTBConfigVersion =   0;
  233.   MaxUserName      =  64;
  234.   MaxIconPath      = 128;
  235.  
  236.   idGTCO           =  MAKEID ("GTCO");
  237.  
  238. TYPE
  239.   GadToolsConfigPtr = POINTER TO GadToolsConfig;
  240.   GadToolsConfig = RECORD
  241.     configFlags0: LONGSET;
  242.     configFlags1: LONGSET;
  243.     crunchBuffer: INTEGER;
  244.     crunchType: INTEGER;
  245.     userName: ARRAY [0..MaxUserName-1] OF CHAR;
  246.     iconPath: ARRAY [0..MaxIconPath-1] OF CHAR;
  247.     reserved: ARRAY [0..3] OF LONGINT;
  248.   END;
  249.  
  250.   (* flag definitions for gtc_ConfigFlags0 *)
  251. CONST
  252.   Coordinates =     0;
  253.   WriteIcon =       1;
  254.   GZZAdjust =       2;
  255.   Crunch =          3;
  256.   CloseWBench =     4;
  257.   Password =        5;
  258.   Overwrite =       6;
  259.   ASLFReq =         7;
  260.   FontAdapt =       8;
  261.  
  262. CONST
  263.   GenOpenFont  = 1;
  264.   SysFont = 2;
  265.  
  266. CONST
  267.   GTXName = "gadtoolsbox.library";
  268.   GTXVersion = 38;
  269.  
  270. TYPE
  271.   GtxBasePtr = POINTER TO GtxBase;
  272.   GtxBase = RECORD
  273.     (*
  274.     ** These library bases may be extracted from this structure
  275.     ** for your own usage as long as the GtxBase pointer remains
  276.     ** valid.
  277.     **)
  278.     libNode: Library;
  279.     dosBase: DosLibraryPtr;
  280.     intuitionBase: IntuitionBasePtr;
  281.     gfxBase: GfxBasePtr;
  282.     gadToolsBase: LibraryPtr;
  283.     utilityBase: LibraryPtr;
  284.     iffParseBase: LibraryPtr;
  285.     consoleDevice: DevicePtr;
  286.     noFragBase: LibraryPtr;
  287.     (*
  288.     ** The next library pointer is not guaranteed to
  289.     ** be valid! Please check this pointer *before* using
  290.     ** it.
  291.     **)
  292.     ppBase: LibraryPtr;
  293.   END;
  294.  
  295. TYPE
  296.   ExtNewGadgetPtr = POINTER TO ExtNewGadget;
  297.   ExtGadgetListPtr = POINTER TO ExtGadgetList;
  298.   ExtGadgetList = RECORD
  299.     head:     ExtNewGadgetPtr;
  300.     tail:     ExtNewGadgetPtr;
  301.     tailPred: ExtNewGadgetPtr;
  302.   END;
  303.   ExtNewGadget = RECORD
  304.     succ: ExtNewGadgetPtr;
  305.     prev: ExtNewGadgetPtr;
  306.     tags: TagItemPtr;
  307.     reserved0: ARRAY [0..3] OF SHORTINT;
  308.     newGadget: NewGadget;
  309.     gadgetLabel: ARRAY [0..MaxGadgetLabel-1] OF CHAR;
  310.     gadgetText: ARRAY [0..MaxGadgetText-1] OF CHAR;
  311.     flags: LONGSET;
  312.     kind: INTEGER;
  313.     reserved1: ARRAY [0..137] OF SHORTINT;
  314.   END;
  315.  
  316. TYPE
  317.   ExtNewMenuPtr = POINTER TO ExtNewMenu;
  318.   ExtMenuListPtr = POINTER TO ExtMenuList;
  319.   ExtMenuList = RECORD
  320.     head:     ExtNewMenuPtr;
  321.     tail:     ExtNewMenuPtr;
  322.     tailPred: ExtNewMenuPtr;
  323.   END;
  324.   ExtNewMenu = RECORD
  325.     succ: ExtNewMenuPtr;
  326.     prev: ExtNewMenuPtr;
  327.     reserved0: ARRAY [0..5] OF SHORTINT;
  328.     newMenu: NewMenu;
  329.     menuTitle: ARRAY [0..MaxMenuTitle-1] OF CHAR;
  330.     menuLabel: ARRAY [0..MaxMenuLabel-1] OF CHAR;
  331.     reserved1: ARRAY [0..3] OF SHORTINT;
  332.     items: ExtMenuListPtr;
  333.     reserved2: ARRAY [0..1] OF SHORTINT;
  334.     commKey: ARRAY [0..MaxShortcut-1] OF CHAR;
  335.     reserved3: ARRAY [0..1] OF SHORTINT;
  336.   END;
  337.  
  338.  
  339. TYPE
  340.   BevelBoxPtr = POINTER TO BevelBox;
  341.   BevelListPtr = POINTER TO BevelList;
  342.   BevelList = RECORD
  343.     head:     BevelBoxPtr;
  344.     tail:     BevelBoxPtr;
  345.     tailPred: BevelBoxPtr;
  346.   END;
  347.   BevelBox = RECORD
  348.     succ: BevelBoxPtr;
  349.     prev: BevelBoxPtr;
  350.     reserved0: ARRAY [0..3] OF SHORTINT;
  351.     left: INTEGER;
  352.     top: INTEGER;
  353.     width: INTEGER;
  354.     height: INTEGER;
  355.     reserved1: ARRAY [0..31] OF SHORTINT;
  356.     flags: BITSET;
  357.   END;
  358.  
  359. TYPE
  360.   ProjectWindowPtr = POINTER TO ProjectWindow;
  361.   WindowListPtr = POINTER TO WindowList;
  362.   WindowList = RECORD
  363.     head:     ProjectWindowPtr;
  364.     tail:     ProjectWindowPtr;
  365.     tailPred: ProjectWindowPtr;
  366.   END;
  367.   ProjectWindow = RECORD
  368.     succ: ProjectWindowPtr;
  369.     prev: ProjectWindowPtr;
  370.     reserved0: ARRAY [0..5] OF SHORTINT;
  371.     name: ARRAY [0..MaxWindowName-1] OF CHAR;
  372.     countIDFrom: INTEGER;
  373.     tags: TagItemPtr;
  374.     leftBorder: INTEGER;
  375.     topBorder: INTEGER;
  376.     windowTitle: ARRAY [0..MaxWindowTitle-1] OF CHAR;
  377.     screenTitle: ARRAY [0..MaxWdScreenTitle-1] OF CHAR;
  378.     reserved2: ARRAY [0..191] OF SHORTINT;
  379.     idcmp: LONGSET;
  380.     windowFlags: LONGSET;
  381.     windowText: IntuiTextPtr;
  382.     gadgets: ExtGadgetList;
  383.     menus: ExtMenuList;
  384.     boxes: BevelList;
  385.     tagFlags: LONGSET;
  386.     innerWidth: INTEGER;
  387.     innerHeight: INTEGER;
  388.     showTitle: BOOLEAN;
  389.     reserved3: ARRAY [0..5] OF SHORTINT;
  390.     mouseQueue: INTEGER;
  391.     rptQueue: INTEGER;
  392.     flags: INTEGER;
  393.   END;
  394.  
  395.   (* tags for the GTX_LoadGUI() routine *)
  396. CONST
  397.   rgTagBase = TAG_USER+512;
  398.  
  399.   rgGUI           = rgTagBase+1;
  400.   rgConfig        = rgTagBase+2;
  401.   rgCConfig       = rgTagBase+3;
  402.   rgAsmConfig     = rgTagBase+4;
  403.   rgLibGen        = rgTagBase+5;
  404.   rgWindowList    = rgTagBase+6;
  405.   rgValid         = rgTagBase+7;
  406.   rgPasswordEntry = rgTagBase+8;
  407.  
  408.   vlfGUI          = 0;
  409.   vlfConfig       = 1;
  410.   vlfCConfig      = 2;
  411.   vlfAsmConfig    = 3;
  412.   vlfLibGen       = 4;
  413.   vlfWindowList   = 5;
  414.  
  415.   ErrorNoMem      = 1;
  416.   ErrorOpen       = 2;
  417.   ErrorRead       = 3;
  418.   ErrorWrite      = 4;
  419.   ErrorParse      = 5;
  420.   ErrorPacker     = 6;
  421.   ErrorPPLib      = 7;
  422.   ErrorNotGUIFile = 8;
  423.  
  424.  
  425. (* A _very_ important handle *)
  426. TYPE
  427.   HotKeyHandle = ADDRESS;
  428.  
  429. CONST
  430.   (* Flags for the HKH_SetRepeat tag *)
  431.   srbMX            = 0;
  432.   srbCycle         = 1;
  433.   srbSlider        = 2;
  434.   srbScroller      = 3;
  435.   srbListView      = 4;
  436.   srbPalette       = 5;
  437.  
  438.   (* tags for the hotkey system *)
  439.   hkhTagBase         = TAG_USER+256;
  440.   hkhKeyMap          = hkhTagBase+1;
  441.   hkhUseNewButton    = hkhTagBase+2;
  442.   hkhNewText         = hkhTagBase+3;
  443.   hkhSetRepeat       = hkhTagBase+4;
  444.  
  445.   txTagBase          = TAG_USER+1;
  446.   txtxtAttr          = txTagBase+1;
  447.   txStyle            = txTagBase+2;
  448.   txForceTextPen     = txTagBase+3;
  449.   txUnderscore       = txTagBase+4;
  450.   txFlags            = txTagBase+5;
  451.   txText             = txTagBase+6;
  452.   txNoBox            = txTagBase+7;
  453.  
  454. VAR GTXBase:GtxBasePtr;
  455.  
  456. PROCEDURE GTX_TagInArray (tag: Tag; TagList: TagPtr): BOOLEAN;
  457. PROCEDURE GTX_SetTagData (tag: Tag; Data: LONGINT;
  458.                       TagList: TagPtr): LONGINT;
  459. PROCEDURE GTX_GetNode (List: ListPtr; NodeNum: LONGINT): NodePtr;
  460. PROCEDURE GTX_GetNodeNumber (List: ListPtr; Node: NodePtr):LONGINT;
  461. PROCEDURE GTX_CountNodes (List: ListPtr): LONGINT;
  462. PROCEDURE GTX_MoveNode (List: ListPtr; Node: NodePtr;
  463.                     Direction: LONGINT): LONGINT;
  464. PROCEDURE GTX_IFFErrToStr (Error, SkipEndOf: LONGINT): ADDRESS;
  465. PROCEDURE GTX_GetHandleA (TagList: TagPtr): HotKeyHandle;
  466. PROCEDURE GTX_GetHandle (Tags: Tag;..): HotKeyHandle;
  467. PROCEDURE GTX_FreeHandle (Handle: HotKeyHandle);
  468. PROCEDURE GTX_RefreshWindow (Handle: HotKeyHandle; Window: WindowPtr;
  469.           Requester: RequesterPtr);
  470. PROCEDURE GTX_CreateGadgetA (Handle: HotKeyHandle; kind: LONGINT;
  471.           Pred: GadgetPtr; NewGadget: NewGadgetPtr;
  472.           TagList: TagPtr): GadgetPtr;
  473. PROCEDURE GTX_CreateGadget (Handle: HotKeyHandle; kind: LONGINT;
  474.           Pred: GadgetPtr; NewGadget: NewGadgetPtr;
  475.           Tags: Tag; ..): GadgetPtr;
  476. PROCEDURE GTX_RawToVanilla (Handle: HotKeyHandle;
  477.                         Code, Qualifier: LONGINT): LONGINT;
  478. PROCEDURE GTX_GetIMsg (Handle: HotKeyHandle;
  479.                    Port: MsgPortPtr): IntuiMessagePtr;
  480. PROCEDURE GTX_ReplyIMsg (Handle: HotKeyHandle;
  481.                      IMsg: IntuiMessagePtr);
  482. PROCEDURE GTX_SetGadgetAttrsA (Handle: HotKeyHandle; Gadget: GadgetPtr;
  483.                            TagList: TagPtr);
  484. PROCEDURE GTX_SetGadgetAttrs (Handle: HotKeyHandle; Gadget: GadgetPtr;
  485.                           Tags: Tag; ..);
  486. PROCEDURE GTX_DetachLabels (Handle: HotKeyHandle;
  487.                         Gadget: GadgetPtr);
  488. PROCEDURE GTX_DrawBox (RPort: RastPortPtr;Left,Top,Width,Height
  489.                    :LONGINT;dri:DrawInfoPtr; State: LONGINT);
  490. PROCEDURE GTX_InitTextClass (): IClassPtr;
  491. PROCEDURE GTX_InitGetFileClass (): IClassPtr;
  492. PROCEDURE GTX_SetHandleAttrsA (Handle: HotKeyHandle;
  493.                            TagList: TagPtr);
  494. PROCEDURE GTX_SetHandleAttrs (Handle: HotKeyHandle; Tags: Tag; ..);
  495. PROCEDURE GTX_BeginRefresh (Handle: HotKeyHandle);
  496. PROCEDURE GTX_EndRefresh (Handle: HotKeyHandle; All: BOOLEAN);
  497. PROCEDURE GTX_FreeWindows (Chain: MemoryChainPtr;
  498.                        VAR Windows:WindowList);
  499. PROCEDURE GTX_LoadGUIA (Chain: MemoryChainPtr; name: ADDRESS;
  500.                     TagList: TagPtr): LONGINT;
  501. PROCEDURE GTX_LoadGUI (Chain: MemoryChainPtr; name: ADDRESS;
  502.                    Tags: Tag; ..): LONGINT;
  503.  
  504. END GadToolsBox.
  505.